[% setvar title The Perl 6 Summary for the week ending 2004-06-27 %]
<div id="archive-notice">
    <h3>This file is part of the Perl 6 Archive</h3>
    <p>To see what is currently happening visit <a href="http://www.perl6.org/">http://www.perl6.org/</a></p>
</div>
<div class='pod'>
<a name='The Perl 6 Summary for the week ending 2004-06-27'></a><h1>The Perl 6 Summary for the week ending 2004-06-27</h1>
<p>What's this? No! It can't be! It's a <i>weekly</i> Perl 6 Summary. What is
the world coming to?</p>
<p>Sorry, I can't answer that one, so I'll tell you what's been happening
this week in perl6-internals.</p>
<a name='Bignums, licenses, pie'></a><h2>Bignums, licenses, pie</h2>
<p>As you are no doubt aware, Python has bignums. And that means that,
unless we want Dan to get a face full of Pie at OSCON this year, Parrot
needs bignums too. Work on several fronts continued towards getting a
bignum implementation for Parrot. Ideally, we'd like to just include
GMP, but the license seems to require that the full source of GMP sip
with any Parrot binary. Which isn't good when you're writing a VM that
you'd like to be able to install on, say, a Palm.</p>
<p>Scott Bronson suggested getting in touch with the GMP developers to see
if there was anything that could be done about it. He volunteered to
be the liaison, assuming Dan was cool with it.</p>
<p>Meanwhile, Uri Guttman offered his 'stillborn' bignum implementation as
a basis for our own bignum library. Leo commented that it might be a
good idea in the medium to long term, but the Pie-thon is looming...</p>
<p><a href='http://groups.google.com/groups?selm=a0611040bbcefb9fb77e6@' target='_blank'>groups.google.com</a>[10.0.1.3]</p>
<p><a href='http://groups.google.com/groups?selm=Pine.LNX.4.58.0406231105390.10311@sprite.sidhe.org' target='_blank'>groups.google.com</a></p>
<a name='Ion's Strings'></a><h2>Ion's Strings</h2>
<p>Remember Ion Alexandru Morega's string pmc that got Warnocked? Well, it
got un-Warnocked this week. Dan liked it, so he checked it
in. Congratulations Ion, don't forget to send in a patch to the
<b><i>CREDITS</i></b> file.</p>
<p><a href='http://groups.google.com/groups?selm=20040620075716.37958.qmail@onion.perl.org' target='_blank'>groups.google.com</a></p>
<a name='Mmm... Pie-thon'></a><h2>Mmm... Pie-thon</h2>
<p>Dan reminded everyone of the URL of the benchmark that's going to be run
for the Pie-thon. If Parrot doesn't run it faster than the C
implementation of Python, then Dan's going to get a pie in the face and
he'll have to spring for a round of drinks for the Python Cabal (is
there one? Could be a cheap round...). Of course, the plan is to have
Parrot be faster than Python so Dan'll get to chuck a Pie at
Guido. Either way, if you're at OSCON this year it should be fun.</p>
<p>Right now, Parrot is some way from, well, running it.</p>
<p>Leo announced that he will start a series of postings discussing the
main features (and requirements) of the various benchmarks. He started
with some notes on <b><i>b6.py</i></b>.</p>
<p><a href='http://groups.google.com/groups?selm=Pine.LNX.4.58.0406210949440.10788@sprite.sidhe.org' target='_blank'>groups.google.com</a></p>
<p><a href='http://groups.google.com/groups?selm=40D82C8F.1010903@toetsch.at' target='_blank'>groups.google.com</a> -- Python needs exception objects</p>
<p><a href='http://groups.google.com/groups?selm=40D84647.40407@toetsch.at' target='_blank'>groups.google.com</a> -- Pie-thon and the recursion limit</p>
<a name='Class name hashes'></a><h2>Class name hashes</h2>
<p>Leo wondered about the current implementation of class name hashes. We
have two such hashes, one for PMC base classes and one
for dynamic PMCs. Leo thought this was suboptimal (and liable to make
one of the Pie-thon benchmarks problematic.) Dan agreed that unifying
the hashes (and renaming PMC classes to have Parrot prefixes
(ParrotFixedSizeArray anyone?)) was the way to go.</p>
<p><a href='http://groups.google.com/groups?selm=40D85C12.8010502@toetsch.at' target='_blank'>groups.google.com</a></p>
<a name='Confusing parameter order'></a><h2>Confusing parameter order</h2>
<p>Nicholas Clark was somewhat bemused by the choice of parameter order
for the <code>Parrot_PMC_set_intval_intkey</code> function, which reverses the
order of some parameters from the vtable version. He suggested unifying
the two. Leo agreed that changing things round was the best bet and
suggested that Nicholas go ahead and make the change to the <b><i>extend.h</i></b>
interface. Dan didn't pipe up to say it was a bad idea. In fact, Dan
didn't pipe up at all.</p>
<p><a href='http://groups.google.com/groups?selm=20040624140935.GH81272@plum.flirble.org' target='_blank'>groups.google.com</a></p>
<a name='Perl 6 regex parser'></a><h2>Perl 6 regex parser</h2>
<p>Jeff 'japhy' Pinyan announced that he was currently completing work on
an extensible, regex-specific, parsing module. Once it's finished, he's
going to start work on writing a subclass that parses Perl 6 rules. He
thought it might come in handy for people implementing Perl 6.</p>
<p>Luke Palmer thought it would be too; the grammar of Perl 6 is being
specified in Perl 6 patterns. Initially it was hoped that Damian's
Perl6::Rules module would be what was needed to bootstrap us, but
'serious bugs in the Perl 5 regex engine having to do with executing
code within regexes' meant that Perl6::Rules can't do the job for us.</p>
<p>So, good luck Japhy, we're depending on you.</p>
<p>But, you know, no pressure mate.</p>
<p><a href='http://groups.google.com/groups?selm=Pine.LNX.4.44.0406262313030.28219-100000@perlmonk.org' target='_blank'>groups.google.com</a></p>
<a name='Leo's tasks for the interested'></a><h2>Leo's tasks for the interested</h2>
<p>Leo asked for volunteers to implement a class to handle complex numbers
(needed for Python) and to implement sort method(s) for the various
*Array PMCs.</p>
<p><a href='http://groups.google.com/groups?selm=40DEF36A.3080101@toetsch.at' target='_blank'>groups.google.com</a></p>
<a name='Meanwhile, in perl6-language'></a><h1>Meanwhile, in perl6-language</h1>
<a name='Command line like switches for functions and operators'></a><h2>Command line like switches for functions and operators</h2>
<p>Michele Dondi proposed syntax for adding 'command line' type switches
to functions and methods which look almost, but not quite, entirely
unlike Perl 6's named parameters. Brent Royal-Gordon pointed out that
Michele's proposed</p>
<pre>    rename -v =&gt; 1, $orig, $new;</pre>
<p>could be written, rather more Perl6ishly as:</p>
<pre>    rename $orig, $new :verbose;</pre>
<p>Luke Palmer pointed out that wrappers could be used to add such extra
named arguments to built ins, so the proposed behaviour for <code>rename</code>
could be implemented as:</p>
<pre>    &amp;*rename.wrap -&gt; $orig, $new, *%opt {
        say &quot;Renaming '$orig' to '$new'&quot; if %opt{'verbose' | 'v'};
	call;
    }</pre>
<p>It turns out that neither of these were what Michele was driving at; it
wasn't so much that new syntax was wanted, but that every built in have
some kind of verbose version.</p>
<p>Meanwhile, as the discussion drifted in typical perl6-language style,
Larry talked about 'allowing (at least) a single closure parameter to
come at the end after the list parameter'. Simon Cozens doesn't seem to
be maintaining his Ruby-o-meter any more, but if Larry were to make
this change, the needle would definitely swing further in Ruby's
direction.</p>
<p><a href='http://groups.google.com/groups?selm=Pine.LNX.4.56L0.0406221118150.1885@worf.pcteor1.mi.infn.it' target='_blank'>groups.google.com</a></p>
<a name='User defined operators'></a><h2>User defined operators</h2>
<p>Michele Dondi wondered if Perl 6 would have a way of defining infix
operators. Answer: Yes. The discussion pointed up some interesting
scoping issues to do with macros too. But macros do that (as a look at
any text on Common Lisp macros will show you).</p>
<p><a href='http://groups.google.com/groups?selm=Pine.LNX.4.56L0.0406241206170.2865@q.pcteor1.mi.infn.it' target='_blank'>groups.google.com</a></p>
<a name='Definitions of truth'></a><h2>Definitions of truth</h2>
<p>Paul Hodges doesn't like the fact that a null character (<code>&quot;\0&quot;</code>) is
has a boolean 'true' value in Perl 5. He hoped that Perl 6 would change
this. It appears his hopes are in vain. The consensus appeared to be
that this kind of thinking is a (potentially) dangerous fossil from C
type thinking. Jonadab the Unsightly One muttered something about
'comparing apples and orange leotards'.</p>
<p>The actually discussion was a little more discursive, of course.</p>
<p><a href='http://groups.google.com/groups?selm=2820B295B95836498EED98D7A065C4F104DBD5D4@bremocmg-55' target='_blank'>groups.google.com</a></p>
<a name='Slicing'></a><h2>Slicing</h2>
<p>Rod Adams wondered how hash slicing will work in 'the glorious age of
Perl 6'.</p>
<p>So do we all Rod. We hope it'll work really well. Apocalypse N will have
detailed answers.</p>
<p><a href='http://groups.google.com/groups?selm=40DB63D1.4070804@rodadams.net' target='_blank'>groups.google.com</a></p>
<a name='Postfix modifiers'></a><h2>Postfix modifiers</h2>
<p>The core Perl 6 language will allow one, and only one, postfix modifier
per statement. Larry has said this several times. If you want more,
modify the grammar yourself.</p>
<p>If that was the last time I find myself having to say this before we
get a Perl 6 beta then I'll gladly eat a hat at the appropriate
OSCON. You can hold me to this (but you'll have to pay my travelling
expenses).</p>
<a name='The .bytes/.codepoints/.graphemes methods'></a><h2>The <code>.bytes</code>/<code>.codepoints</code>/<code>.graphemes</code> methods</h2>
<p>Argh! Unicode! But for once it's not moaning about Unicode operators,
so that's a result.</p>
<p>Brent Royal-Gordon wondered about the behaviour of the <code>.bytes</code>,
<code>.codepoints</code>, and <code>.graphemes</code> methods on the String object. He
suggested that, in a list context, they return a list of the appropriate
things in the string. Larry looked upon Brent's proposal and saw that it
was good.</p>
<p><a href='http://groups.google.com/groups?selm=40DDCE2A.1080806@brentdax.com' target='_blank'>groups.google.com</a></p>
<a name='if, loop and lexical scope'></a><h2><code>if</code>, <code>loop</code> and lexical scope</h2>
<p>Alexey Trofimenko wondered about the lexical scoping rules associated
with Perl 6's various control structures.</p>
<p>If you're unsure about them yourself, Luke Palmer's reply is an
excellent overview of how such scoping works and of some of the
rationale behind it.</p>
<p><a href='http://groups.google.com/groups?selm=opr99iqr0esspxk8@s' target='_blank'>groups.google.com</a></p>
<a name='Announcements, Apologies, Acknowledgements'></a><h1>Announcements, Apologies, Acknowledgements</h1>
<p>Hopefully this summary marks a return to the good old days of weekly
summaries, posted to the mailing lists near the beginning of the week.</p>
<p>Well, we can always hope can't we?</p>
<p>If you find these summaries useful or enjoyable, please consider
contributing to the Perl Foundation to help support the development of
Perl. You might also like to send me feedback at
mailto:<a href='mailto:pdcawley@bofh.org.uk'>pdcawley@bofh.org.uk</a></p>
<p><a href='http://donate.perl-foundation.org/' target='_blank'>donate.perl-foundation.org</a> -- The Perl Foundation</p>
<p><a href='http://dev.perl.org/perl6/' target='_blank'>dev.perl.org</a> -- Perl 6 Development site</p>
</div>
